package com.tp2.etna.distribucion1.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.tp2.etna.distribucion1.constante.GeneralConstante;
import com.tp2.etna.distribucion1.modelo.ZonaDespachoModel;

@Repository
public class ZonaDespachoDAOImpl implements ZonaDespachoDAO {

	@Autowired
    private DataSource dataSource;
	
	public void setDataSource(DataSource dataSource) {
	        this.dataSource = dataSource;
	}
	
	@Override
	public List<ZonaDespachoModel> listar() {
		
		String query = "SELECT codigo"
				+ ",descripcion"
				+ ",abreviatura"
				+" FROM ZONADESPACHO";				
					 
     List<ZonaDespachoModel> lista = new ArrayList<ZonaDespachoModel>();
     
     ZonaDespachoModel zona = null;
     
     zona = new ZonaDespachoModel();
     zona.setCodigo(0);
     zona.setDescripcion("[Todos]");
	 zona.setAbreviatura(GeneralConstante.CADENA_VACIA);
     
	 lista.add(zona);
     
     Connection con = null;
     PreparedStatement ps = null;
     ResultSet rs = null;
     try{
         con = dataSource.getConnection();
         ps = con.prepareStatement(query);
                   
         rs = ps.executeQuery();
         while(rs.next()){
        	 zona = new ZonaDespachoModel();
        	 zona.setCodigo(rs.getInt("codigo"));
        	 zona.setDescripcion(rs.getString("descripcion"));
        	 zona.setAbreviatura(rs.getString("abreviatura"));
         
             lista.add(zona);
             
         }
         
     }catch(SQLException e){
         e.printStackTrace();
     }finally{
         try {
             rs.close();
             ps.close();
             con.close();
         } catch (SQLException e) {
             e.printStackTrace();
         }
     }
     return lista;
		
	}

}
